// numberUtils.js - 数字处理工具类

const NumberUtils = {
  /**
   * 保留两位小数（四舍五入）
   * @param {number|string} num 原始数字
   * @returns {number}
   */
  toFixed2(num) {
    return Number(Number(num).toFixed(2));
  },

  /**
   * 保留三位小数（四舍五入）
   * @param {number|string} num 原始数字
   * @returns {number}
   */
  toFixed3(num) {
    return Number(Number(num).toFixed(3));
  },

  /**
   * 保留 n 位小数（四舍五入）
   * @param {number|string} num 原始数字
   * @param {number} digits 保留位数
   * @returns {number}
   */
  toFixedN(num, digits) {
    return Number(Number(num).toFixed(digits));
  },

  /**
   * 四舍五入到整数
   * @param {number|string} num
   * @returns {number}
   */
  round(num) {
    return Math.round(Number(num));
  },

  /**
   * 强制保留两位小数（不足补0，返回字符串）
   * @param {number|string} num
   * @returns {string}
   */
  formatFixed2(num) {
    return Number(num || 0).toFixed(2);
  },

  /**
   * 用于 el-table 中的格式化方法，强制保留两位小数（不足补0，返回字符串）
   * @param {Object} row 表格行对象
   * @param {Object} column 列对象
   * @param {number|string} cellValue 单元格值
   * @returns {string}
   */
  formatFixed2InTable(row, column, cellValue) {
    return Number(cellValue || 0).toFixed(2);
  },

  /**
   * 用于 el-table 中的格式化方法，保留两位小数并加 $ 符号
   * @param {Object} row 表格行对象
   * @param {Object} column 列对象
   * @param {number|string} cellValue 单元格值
   * @returns {string}
   */
  formatCurrencyInTable(row, column, cellValue) {
    return '$' + Number(cellValue || 0).toFixed(2);
  },

  /**
   * 直接格式化数值，保留两位小数并加 $ 符号
   * @param {number|string} value
   * @returns {string}
   */
  formatCurrency(value) {
    return '$' + Number(value || 0).toFixed(2);
  },

  /**
   * 判断一个值是否为有效数字
   * @param {*} val
   * @returns {boolean}
   */
  isNumber(val) {
    return !isNaN(parseFloat(val)) && isFinite(val);
  }
}

export default NumberUtils
